package com.zzyl.service;

import com.zzyl.base.PageResponse;
import com.zzyl.dto.AlertRuleDto;
import com.zzyl.vo.AlertRuleVo;
import com.zzyl.vo.DeviceDataVo;

/**
 * @Description AlertruleService
 * @Author Lwj
 * @Date 2024-09-14-15:40
 */
public interface AlertruleService {
    /**
     * 新增报警规则
     *
     * @param alertRuleDto
     */
    void creatEalertRule(AlertRuleDto alertRuleDto);

    /**
     * 分页获取告警规则列表
     *
     * @param pageNum
     * @param pageSize
     * @param alertRuleName
     * @param functionName
     * @param productKey
     * @return
     */
    PageResponse<AlertRuleVo> getPageAlertrule(Long pageNum, Long pageSize, String alertRuleName, String functionName, String productKey);

    /**
     * 获取单个告警规则
     *
     * @param id
     * @return
     */
    AlertRuleVo getAlertruleById(Long id);

    /**
     * 更新告警规则
     *
     * @param alertRuleDto
     */
    void updateAlertruleById(AlertRuleDto alertRuleDto);

    /**
     * 删除告警规则
     * @param id
     */
    void deleteAlertruleById(Long id);

    /**
     * 警告规则启用-禁用(0 禁用 1启用)
     * @param id
     * @param status
     */
    void setStartAlertrule(Long id, Integer status);

    /**
     * 校验设备上报数据，进行报警规则过滤处理
     *
     * @param deviceDataVo 设备上报数据
     */
    void alertFilter(DeviceDataVo deviceDataVo);
}
